Text object with Faster R-CNN from Detectron2

Detectron2 is a DL framework built by Facebook to allow for easy implementation of the state-of-art models like Fast, Faster, and Mask R-CNN which are pretrained on COCO dataset. Here I will use Faster R-CNN to detect text and classify the language to which the text belongs.

keywords: Detectron2, Faster R-CNN, text detection, COCO dataset

Urban areas segmentation of satellite images

This is an end-to-end method of urban-area segmentation starting from acquiring and preprocessing satellite images, combining unsupervised learning (clustering) with manual labeling to generate a labeled dataset of urban area maps of the acquired images, finally, building and training a binary segmentation model to predict urban area maps of new satellite images.

keywords: urban-areas detection, SegNet, PlanetScope

Detecting urban development in Dubai

Using temporal satellite imagery, I extract the difference by clustering the principle components of the difference image and using connected component analysis to sort developed areas to focus on the areas that witnessed the most change.

keywords: PCA, connectedComponentAnalysis, urban development detection

3D Brain tumor segmentation

segmentaiton of brain tumors for MRI using 3d-UNet

This project is still ongoing (live code can be found in the 'code' link). The aim of the project is to get familiar with 3D segmentation by buliding a multi-class segmentation model which identifies 3 abnormalities: edemas, non-enhancing tumors, and enhancing tumors.

keywords: Brain tumor, MRI, tumor segmentation, 3D UNet

Chest X-Ray Medical Diagnosis

using deeplearning to diagnose 14 pathological conditions

In this project, DenseNet121 is used to classify a chest x-ray image. Target classes include cardiomegaly, mass, infiltration, etc.. A custom weighted loss function was used to account for the high class imbalance present in the dataset In addition, advanced evaluation and visualization tools, like AUROC and GradCAM, were used to further asses and understand the model's performance.

keywords: xray diagnosis, AUC curve, GradCAM, Data leakage, Data imbalance, DenseNet

Lane instance segmentation

This project was, dare I say it, an improvement on LaneNet's speed, from 0.7 FPS to 15 FPS on tesla k80, while being slightly less accurate, acheiving 91% compared to 96% by LaneNet on tuSimple dataset. This improvement was done by replacing the discriminative loss function branch (which uses the computationally expensive DBSCAN and mean-shift algorithms) with a simpler and faster nested sliding windows extracting each lane from a lane binary segmentation map.

keywords: Lane detection, instance segmentation, SegNet, sliding window, TensorFLow

Lane detection

non-DL based method

Image processing techniques like canny edge detection, binary thresholding, perspective transformation, and histogram, are used to make a fast non-deeplearning based lane detection algorithm. The algorithm also fits the detected lanes in a 3rd order polynomial function to be used in following frames as a starting point to detect lanes.

keywords: Lane detection, perspective transformation, histogram, opencv

Image captioning

An implementation of Google's image captioning paper

In this project, an end-to-end image captioning deep-learning-based architecture is presented based on Google's paper entitled "Show and Tell: A Neural Image Caption Generator". The architecture starts with extracting features from the input image using a top-less pre-trained CNN (InceptionV3 is used here). Then, LSTM units are fed the image features as an initial state as well as the caption tokens one at a time.

keywords: captioning, InceptionV3, LSTM, Keras

Face recognition with PCA

using haar cascade to detect and PCA to recognize!

PCA is a dimensionality reduction tool used, generally, to reduce the number of features in ML applications while preserving the VARIANCE between the reduced number of features (also called principle components), in this project, however, reducing features also has the effect of obtaining a higher level representation of faces (higher than raw pixel values) which we can compare between faces to perform this complex task, even for DL, with reasonable accuracy and much faster than DL-based methods.

keywords: PCA, haar cascade, dimensionality reduction, face recognition

Noisy MNIST classification

using KNN to classifiy a Noisy MNIST dataset

KNN is a simple machine learning algorithm for classification tasks which requires no learning and works the best on medium-sized datasets. Here, I firstly clean the data using median filter and cropping, then I use PCA dimensionality reduction tool to speed up KNN by reducing feature dimension as well as increase feature quality. Finally, the model's performance is evaluated using the Leave-one-out cross-validation algorithm and confusion matrix is calculated on the testset

keywords: KNN, PCA, MNIST, median-filter, confusion matrix, Leave-one-out cross-validation

simple CNN classifier

classifying images of horses vs humans with CNN

In this project, I built a simple CNN classifier to classify human vs horses images (binary classfication). Image augmentation is used to increase the size of the dataset and introduce more variations and noise to the available samples. This project was part of the tensorflow developer professional certificates and it's meant to introduce the concept of ImageDataGenerator of keras in a simple example.

keywords: CNN, ImageDataGenerator, keras, Dropout, RMSprop, binary classification